#pragma once



#include "CoreMinimal.h"
#include "Kismet/BlueprintFunctionLibrary.h"
#include "Input/InputConfigureLibrary.h"
#include "WGIBlueprintLibrary.generated.h"






UCLASS()
class WIDGETGROUP_API UWGI_BlueprintLibrary : public UBlueprintFunctionLibrary
{
	GENERATED_BODY()

public:
	/**
	 * 选着一个新的输入组
	 *
	 */
	UFUNCTION(BlueprintCallable, Category = "WGI|Config")
		static void SelectInputConfigureGroup(FString NewGroupName, bool bIsDefalutLoad = false);

	/**
	 * 获取当前的输入组名称
	 *
	 */
	UFUNCTION(BlueprintCallable, BlueprintPure, Category = "WGI|Config")
		static FString GetCurrentInputConfigureGroup();

	/**
	 * 设置默认的输入组
	 *
	 */
	UFUNCTION(BlueprintCallable, Category = "WGI|Config")
		static void SetDefaultLoadsInputConfigureGroup(FString NewGroupName);

	/**
	 * 编辑器模式下，在每次游戏开始时，可能会出现无法载入正确的默认输入组。
	 * 使用这个函数确保在每次游戏开始时，载入的默认输入组是正确的
	 *
	 */
	UFUNCTION(BlueprintCallable, Category = "WGI|Config")
		static void CheckReloadToDefaultInputConfig();

	/**
	 * 在每次加载输入组的数据时，将会触发此事件
	 * 仅可绑定一次，后者将会覆盖前者
	 */
	UFUNCTION(BlueprintCallable, Category = "WGI|Config")
		static void BindChangedInputGroupEvent(FOnChangedInputGroup InEvent);

	/**
	 * 再有任何键输入时调用
	 * 仅可绑定一次，后者将会覆盖前者
	 */
	UFUNCTION(BlueprintCallable, Category = "WGI|Config")
		static void BindAnyKeyDownEvent(FOnAnyKeyDown InEvent);
};
